<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <script>
        //创建promise对象
        const p = new Promise((resolve, reject) => {
            setTimeout(() => {
                resolve('用户数据')
                    // reject('出错了')
            }, 1000)
        });
        //调用then方法  then方法的返回结果是Promise对象，对象状态由回调函数的执行结果决定
        //如果回调函数中返回的结果是非promise类型的数据,状态为成功，返回值为对象成功的值
        // const result = p.then(value => {
        //     console.log(value);
        //     //1.返回非promise类型的属性
        //     // return '123';
        //     //2.返回是promise对象
        //     // return new Promise((resolve, reject) => {
        //     //     resolve('ok')
        //     //         // reject('error')
        //     // })
        //     //3. 抛出错误
        //     // throw new Error('出错了')
        //     throw '出错了！！！'
        // }, reason => {
        //     console.warn(reason);
        // })
        // console.log(result);

        //链式调用 1.then方法可只指定一个回调方法 2.通过then方法链式调用，then方法里的回调函数里可写异步任务，这样可避免回调地狱现象。
        p.then(value => {
            console.log(result);
        }, reason => {
            console.error(reason);
        }).then(value => {})
    </script>
</body>

</html>